/**
 * 由吸热管拼成矩形
 */

#ifndef REFINED_RECTANGLE_H
#define REFINED_RECTANGLE_H

#include <algorithm/shared/data/topology/geometry/Geometry.h>
#include <algorithm/shared/utils/Vec2.h>
#include <utils/ParaUtils.h>

#include <boost/describe.hpp>

namespace solar
{
    class RefinedRectangle : public Geometry
    {
        public:
            RefinedRectangle(Vec2 size = {1, 1}) : size_(size) {}
            [[nodiscard]] auto getType() const -> GeometryType override { return type_; }
#include <utils/class_name.inc>

        private:
            Vec2 size_; // size_.x--长，size_.y--宽

            int tube_; // refined rectangle貌似只需要tube_radius_
            int panel_;
            int tube_unit_;
            double tube_radius_{0.01105};

            GeometryType type_ = GeometryType::kGeometryRefinedRectangle;
            BOOST_DESCRIBE_CLASS(RefinedRectangle, (Geometry), (), (),
                                 (size_, tube_, panel_, tube_unit_, tube_radius_))
    };
} // namespace solar
#define CURRENT_CLASS_NAME RefinedRectangle
#include <utils/class_describe_header.inc>
SOLAR_DESCRIBE_CLASS(RefinedRectangle, (Geometry), (), (),
                     (size_, tube_, panel_, tube_unit_, tube_radius_))
#endif
